1. Technical Field
The invention relates to input and output management on data processing systems and more particularly to a robust high performance file system for managing auxiliary disk storage systems.
2. Description of the Related Art
Physical storage of data on a mass storage device which is an auxiliary of a host computer or file server depends on the physical organization of the storage device. Within a computer, data are organized logically as files. A file system maps the file onto the mass storage device, allowing the file to be stored to a device and later accessed from the device for purposes of modification, destruction, or other manipulation. Aspects enhancing the robustness of such mapping, particularly as it applies to disk drives, are dealt with here.
File systems for disk drives are among the more visible aspects of computer operating systems from a user's perspective. Those familiar with the command line interface of the venerable Disk Operating System (DOS) will recognize the pathnames used in that system as strings of names for directories ending in the name of a desired file. The pathname describes the location of a file in the multiple level tree structured directory based on a root directory used by DOS, as well as by the UNIX and OS/2 operating systems.
The two primary objects of file systems are files and directories. User and program data are always placed in files. Directories own files and other directories and provide a vehicle for locating records of a file stored on disk. A file manifests itself on a disk drive as one or more physical records of data and a record for storing a control structure. Directories include a record for storing a control structure. In the High Performance File System (HPFS) provided with the OS/2 operating system, available from International Business Machines Corporation, these control structure records are called FNODES. FNODES are similar in concept to the familiar INODES employed by various versions of the UNIX operating system. On access to an FNODE the file system can recover items such as an access control list, extended attributes, pointers to the records of data for the file (if for a file) and a back pointer to a parent directory (unless the FNODE is for the root directory).
Implementing a file system also requires certain general control structures. Some of these control structures are generated upon mounting of a disk with the initial program load (a/k/a boot) of the operating system. Other control structures are resident on disk and so survive shutdown of the disk drive and the data processing system.
Four major control structures are stored on disk in the HPFS. The first of these is the Superblock, a static structure on a formatted disk permanently stored at sector 16. The most pertinent feature of the Superblock is a pointer to the FNODE for the root directory. Another structure is the Spareblock, which is a dynamic structure permanently stored at sector 17 of a disk. The Spareblock has been used for storing information relating to the HotFix List and the Spare Directory Block (SpareDirBlk). The HotFix List is a map of good reserved sectors which may be substituted on the fly for bad sectors. Once a HotFix List sector is so substituted the HotFix List functions as a map from the bad sector to the substituted good sector. The Spare Directory Block is a list of groups of adjacent sectors which may be used for creation of directories in case of shortage of space for that purpose on the disk.
The data of the Spareblock and HotFix List are critical to operation of the HPFS. The sectors in which the Spareblock and HotFix List are located are termed critical sectors. The formats for file systems for most versions of UNIX, among other operating systems, replicate data from critical sectors at one or more places on the disk. As long as these critical sectors are static (i.e., their contents do not change over time), the replication does not incur input/output overhead. If the critical sectors are dynamic, then input/output overhead and other complexities are incurred if dynamic updating is used. Multiple sector writes must be done (one for each replica) and a mechanism for resolving which replica to trust must be employed in order to handle the possibility of failure to one or more replicas. Some file systems opt for performance through not replicating dynamic critical sectors. HPFS is an example of such a file system and its Spareblock sector is an example of one of its dynamic critical sectors. However, the absence of replicated critical sectors leaves these file systems more vulnerable to disk wear and failure than other file systems. Thus it would be advantageous to these file systems to provide some technique other than routine replication of critical sectors for improving robustness.